import Vue from 'vue'
import VueRouter from 'vue-router'
import store from "../store/index.js"

Vue.use(VueRouter)

//2.给每个路由设置单独的权限
function checkRoute(url, next) {
  // 如果你的info.menus_url里包含这个地址,代表你可以访问否则访问不了
  if (store.state.info.menus_url.includes(url)) {
    next()
  } else {
    next("/")
  }
}

export let IndexRoutes = [
  {
    path: 'menu',
    component: () => import('../pages/menu/menu.vue'),
    meta: {
      title: '菜单管理'
    },
    beforeEnter(to, from, next) {
      checkRoute("/menu", next)
    }
  },
  {
    path: 'role',
    component: () => import('../pages/role/role.vue'),
    meta: {
      title: '角色管理'
    },
    beforeEnter(to, from, next) {
      checkRoute("/role", next)
    }
  },
  {
    path: 'manage',
    component: () => import('../pages/manage/manage.vue'),
    meta: {
      title: '管理员管理'
    },
    beforeEnter(to, from, next) {
      checkRoute("/manage", next)
    }
  },
  {
    path: 'cate',
    component: () => import('../pages/cate/cate.vue'),
    meta: {
      title: '商品分类'
    },
    beforeEnter(to, from, next) {
      checkRoute("/cate", next)
    }
  },
  {
    path: 'specs',
    component: () => import('../pages/specs/specs.vue'),
    meta: {
      title: '商品规格'
    },
    beforeEnter(to, from, next) {
      checkRoute("/specs", next)
    }
  },
  {
    path: 'goods',
    component: () => import('../pages/goods/goods.vue'),
    meta: {
      title: '商品管理'
    },
    beforeEnter(to, from, next) {
      checkRoute("/goods", next)
    }
  },
  {
    path: 'banner',
    component: () => import('../pages/banner/banner.vue'),
    meta: {
      title: '轮播图管理'
    },
    beforeEnter(to, from, next) {
      checkRoute("/banner", next)
    }
  },
  {
    path: "vip",
    component: () => import("../pages/vip/vip.vue"),
    meta: {
      title: "会员管理"
    },
    beforeEnter(to, from, next) {
      checkRoute("/vip", next)
    }
  },
  {
    path: "seckill",
    component: () => import("../pages/seckill/seckill.vue"),
    meta: {
      title: "秒杀活动"
    },
    beforeEnter(to, from, next) {
      checkRoute("/seckill", next)
    }
  },
]

const routes = [
  {
    path: '/login',
    component: () => import('../pages/login/login.vue')
  },
  {
    path: '/',
    component: () => import('../pages/index/index.vue'),
    children: [{
      path: '',
      component: () => import('../pages/home/home.vue')
    },
    ...IndexRoutes,
    ]
  },
  // 重定向
  {
    path: '*',
    redirect: '/'
  }
]

const router = new VueRouter({
  routes
})

router.beforeEach((to, fro, next) => {
  // 1.前往登录，next 
  if (to.path === "/login") {
    next();
    return;
  }
  // 2.前往的不是登录，验vuex|本地存储的数据，有数据，next 
  if (!!store.state.info.token) {
    next()
    return
  }
  // 3.vuex|本地存储没有数据，next('/login')
  next("/login")
})

export default router
